package com.it.xml;


import com.it.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;

// TODO SpringMVC (3)、参数校验

/**
 * 【说明】：
 *      param | JSON校验注解都有效
 *      JSON参数 在 @Validated 添加 @RequestBody  即可
 * 【步骤】：
 *      1、给实体类添加校验注解
 *      2、在参数前添加 @Validated 开启校验
 * 【注意】：如果不符合规则，会直接向前端返回错误信息
 *         应该接收错误绑定信息，自定义错误结果，返回给前端
 * 【解决】：捕捉错误，并绑定错误信息
 *      1、获取错误：在对应的参数后面添加 BindingResult
 *          handler(校验对象,BindingResult result) 要求必须紧挨校验对象
 *      2、绑定错误
 *
 */
@Controller
@RequestMapping("/ver")
@ResponseBody
public class springmvc03 {

    @PostMapping ("/data1")
    /**
     *  @Validated 在参数列表中添加该注解，表示校验开启
     */
    public Object data1(@Validated @RequestBody User user, BindingResult result) {
        // 如果有错误，就不返回了
        if (result.hasErrors()) {
            System.out.println("参数错误！！！");
            HashMap<String, Object> err = new HashMap<String, Object>();
            err.put("code", 400);
            err.put("msg","参数异常！！！");
            return err;
        }
        System.out.println("参数正确！！！");
        return user.toString();
    }
}
